#ifndef __KAART_H__
#define __KAART_H__

//! Basisklasse van de actiekaarten. 
/*!
  Indien een kaart in een register geplaatst is, zal deze kaart de robot besturen.
  \author Kenneth Venken
		  Maarten Lambert	
*/

class SpelerContext;
class Spel;
class Robot;
#include "Rotatie.h"

class Kaart
{
public:
	Kaart(){;}
	virtual ~Kaart() {}

	virtual void bestuurRobot(Robot* robot, Spel* spel) = 0;
	// returned true als het gelukt is om de robot te duwen
	bool duwRobot(Robot* robot, const Rotatie& richting, Spel* spel); 

	/* set eigenaar */
	void setEigenaar(SpelerContext *);
	SpelerContext* getEigenaar() { return m_eigenaar; }
	void setPrioriteit(int prioriteit){m_prioriteit = prioriteit;}

	// get
	const int getPrioriteit(){return m_prioriteit;}

	// gebruikt door AI (spel hoeft eigenlijk niet mee gegeven te worden, enkel een map
	virtual void project(Robot* robot, const Spel* spel) const = 0;
protected:
	/* prioriteit */
	int m_prioriteit;

	/* de eigenaar */
	SpelerContext * m_eigenaar;


};

#endif
